print()
"""
从键盘接收一个十一位的数字，判断其是否为尾号 5 连（最后5个数一样）的手机号。
规则：第 1 位是 1，第二位可以是数字 358 其中之一，
后面 4 位任意数字，最后 5 位为任意相同的数字。例如：18601088888、13912366666 则满足。 
注意：不满足的输出“false”，满足要求的输出“true”。
"""
"""纯用切片与判断就可以完成"""
# number = list(input('请输入一个十一位的手机号:'))
# print(number)
# if len(number) == 11 and number[0] == '1' and number[1] in ['3', '5', '8'] and len(set(number[6:11])) == 1:
#     print('True')
# else:
#     print('flase')

"""
一个球从 100 米高度自由落下，每次落地后反弹回原高度的一半，再落下，再反弹。
求它在第十次落地时，球共经过多少米? 第十次反弹多高? 
"""

# tour = []  # 每次落地经过的高度容器
# height = []  # 每次反弹高度的容器
# hei = 100.0  # 起始高度
# for i in range(1, 11):
#     # 从第二次开始，落地时的距离应该是反弹高度乘以2（弹到最高点再落下）
#     if i == 1:
#         tour.append(hei)
#     else:
#         tour.append(2 * hei)
#     hei /= 2  # 反单
#     height.append(hei)
# print(tour)
# print(height)
# print('总高度：tour = {0}'.format(sum(tour)))
# print('第10次反弹高度：height = {0}'.format(height[-1]))

"""
判断一个整数是否为“水仙花数”。所谓“水仙花数”是指一个三位的整数，其每个单独数字的立方和等于该数本身。
例如：153 是一个“水仙花数”， 例如 153=1**3＋5**3＋3**3。 如果是水仙花数就输出YES,否则就输出No
"""
num = input('请输入一个数:')  # 三位数

a = 0  # 累加值的和
for i in num:
    a += int(i) ** 3

result = int(num)
# 判断 153=1**3＋5**3＋3**3
if a == result and len(num) == 3:
    print('YES')
else:
    print('NO')
